package com.xx.springboot.DataStructure.Stack;


import com.xx.springboot.DataStructure.Array.Array;

public class ArrayStack<T> implements Stack<T> {

    private Array<T> array;


    /**
     * 有参构造函数
     * @param capacity 容量大小
     */
    public ArrayStack(int capacity){
        array = new Array<T>(capacity);
    }

    /**
     * 无参数构造函数
     */
    public ArrayStack(){
        this(10);
    }

    /**
     * 获取栈的长度
     *
     * @return
     */
    public int size() {

        return array.getSize();
    }

    /**
     * 栈是否为空
     *
     * @return
     */
    public boolean isEmpty() {
        return array.isEmpty();
    }

    /**
     * 入栈 向栈中添加元素
     *
     * @param t
     */
    public void push(T t) {
        array.addLast(t);
    }

    /**
     * 出栈 去除栈顶的元素
     *
     * @return
     */
    public T pop() {
        return array.removeLast();
    }

    /**
     * 查看栈顶的元素
     *
     * @return
     */
    public T peek() {
        return array.getLast();
    }
}
